#include "Robot.h"
#include "EtatRobotAVide.h"

Robot::Robot() : Affichable(), position(0,0), direction("N") {

	etat = EtatRobotAVide::getInstance(this);

	ancienEtat = NULL;
	objet = NULL;
	obstacle = NULL;
}

void Robot::avancer(int x, int y) {
	etat->avancer(x, y);
}

void Robot::saisir(Objet o) {
	etat->saisir(o);
}

void Robot::poser() {
	etat->poser();
}

void Robot::figer() {
	etat->figer();
}

void Robot::repartir() {
	etat->repartir();
}

int Robot::peser() {
	return etat->peser();
}

void Robot::rencontrerObstacle(Obstacle* o) {
	etat->rencontrerObstacle(o);
}

int Robot::evaluerObstacle() {
	return etat->evaluerObstacle();
}

void Robot::changerEtat(EtatRobot* e){
	etat = e;
	notify();
}

EtatRobot* Robot::getAncienEtat(){
	return ancienEtat;
}

void Robot::changerAncienEtat(EtatRobot* e){
	ancienEtat = e;
}

void Robot::setObjet(Objet o) {
	objet = o;
}

void Robot::setObstacle(Obstacle* o) {
	obstacle = o;
}

void Robot::setDirection(string d) {
	direction = d;
}

Position Robot :: getPosition(){
	return position;
}

Obstacle* Robot::getObstacle() {
	return obstacle;
}

Objet Robot::getObjet() {
	return objet;
}

string Robot::getDirection() {
	return direction;
}
